package com.gitee.cirnochat.login.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gitee.cirnochat.login.model.dto.DeviceInfo;
import com.gitee.cirnochat.login.model.entity.LoginHistory;
import com.gitee.cirnochat.login.model.vo.resp.LoginHistoryVo;

import java.util.List;

/**
* @author FlanChan
* @description 针对表【login_history(登陆历史)】的数据库操作Service
* @createDate 2025-05-28 19:21:28
*/
public interface LoginHistoryService extends IService<LoginHistory> {

    /**
     * 异步保存登录历史记录
     *
     * @param deviceId   设备ID
     * @param ipAddress  IP地址
     * @param deviceInfo 设备信息
     * @param isLogin    登录状态，1表示登录，0表示登出
     * @param userId     用户ID
     */
    void saveLoginHistoryAsync(String deviceId, String ipAddress, DeviceInfo deviceInfo, String userAgent, int isLogin, Long userId);

    /**
     * 清理所有用户的登录历史记录
     * @param days 保留的天数，以当前时间点，超过这个天数的记录将被删除
     */
    void cleanLoginHistory(int days);

    /**
     * 清空指定用户的登录历史记录
     *
     * @param userId 用户ID
     */
    void clearLoginHistory(Long userId);


    /**
     * 删除指定的登录历史记录
     *
     * @param historyId 登录历史记录ID
     * @param userId    用户ID
     */
    void deleteLoginHistory(Long historyId, Long userId);

    /**
     * 获取用户的登录历史记录
     *
     * @param limitDays
     * @param userId    用户ID
     * @return 登录历史记录列表
     */
    List<LoginHistoryVo> getLoginHistory(int limitDays, Long userId);


}
